#ifndef	__raytracer_h__
#define	__raytracer_h__

#include "inccommon.h"

namespace rtMath
{
class vec4;
class Ray;
};

class Scene;
class Image;

class RayTracer
{
	friend DWORD WINAPI ThreadWork(void* ptr);
public:
	RayTracer();
	~RayTracer();

	void			SetMaximumTraceDepth(int maxTraceDepth);
	void			Render(const Scene& scene, Image& screen);
	void			RenderMP(const Scene& scene, Image& screen, int numThreads);

private:
	rtMath::vec4	TraceRay(const rtMath::Ray& ray, const Scene& scene, int currentDepth) const;

private:
	int				m_MaximumTraceDepth;
};

#endif	// __raytracer_h__
